[项目问题]Android
MVC、MPV
- MVC模式:
- Activity在C层,但由于Android的问题,Activity会要做到View层和Controller层的事情。
- MVP:
- Activity在View层,通过P层去访问Model层,后P层再把数据给Activity。
如何获取本地音乐
- 首先使用MediaStore.Audio.Media.EXTERNAL_CONTENT_URI查询到音乐存储的URI。
- 使用ContentResolver.query(),来查询,返回结果是一个Cursor对象。这个对象允许程序以行的方法读取和处理数据,里面每一行就是歌曲的信息。
- 用一个List,里面的对象时Music的实体类,将这些信息存入到这个List中。
如何展示音乐列表
- 展示音乐列表通过RecycleView来实现,它通过Adapter与数据源进行通信,当需要显示一个新的Item时,Adapter会告诉RecycleView如何创建ViewHolder并绑定数据。
- ViewHolder:
- ViewHolder就是RecycleVIew中一个单独的视图。
- 初始化后,将数据源与ViewHolder绑定。数据源就是包含音乐信息的List。在onBindViewHolder.
- 绑定完后,去Activity中创建适配器。并将其与RecycleView绑定。
- 使用接口回掉的方法完成点击事件,接口中将被点击的View和点击的位置传入。写一个传递接口的方法,当有一个被点击时调用这个接口。
- 在Activity中设置一个点击监听,在这里完成详细的操作。
广播
- 应用程序发送广播的时候,这条广播将会发送给所有已注册该广播的接收者,接收者可以通过在代码中注册特定的IntentFilter来接收广播。
- 我注册的广播类型:
- 播放/暂停
- 下一首
- 上一首
- 添加进喜欢歌单
- 关闭
- 更新
- 错误
- 各个控件:通知栏,底部栏等将会接收到广播更新自己的UI。
我的数据库
- 存了三张表
- 1.歌曲信息表
- 2.歌单信息表
- 3.歌单与歌曲的对应表
- 软件第一次启动时,默认创建这三张表,并默认创建我最喜欢歌单和历史记录歌单。
Room操作数据库
Entity:
- @Entity:标记为一个实体类,类似于bean
- @primary: 主键
- @ColumIfo: 别名
Dao接口:对ntity操作的封装,可以在这里进行增删改查
- @DAO: 标明
- @Insert: 插入
- @Update: 修改
- @Delete: 删除
- @Query: 查询
- @Query(“SELECT * FROM WORD ORDER BY ID DESC”) 查询所有降序排序。
- @Query(“DELETE FROM WORD”) 清空WORD表。
- DataBase:抽象类,继承于RoomDataBase
- @Database(eneieies = {Word.Class}, version = 1)//第一个是哪个实体类
- 里面写一个抽象的Dao就行。
要想实现对数据库增删改查, 那么先创建一个database对象,用这个对象获取数据的dao,然后调用dao的方法就可以了
查询时
- 使用嵌套查询
1
SELECT *FROM student WHERE sid in (SELECT sid FROM teach WHERE tid = (SELECT tid from teacher WHERE name = '张三'))
Fragment传递数据
使用Bundle
- 使用bundle将数据打包传递给另一个Fragmen。
- 使用put对象添加数据。
1
bundle.putString("key", "value")
- 另一个Fragmen中,通过getArguments()的方式获取Bundle
1
2Bund bundle = getArgumnet();
String value = bundle.getString("key");
使用接口回调
- 定一个一个接口,让Fragment实现它,并传递给第二个Fragment。
- 第二个Fragment中,调用接口来传数据。